//
//  HttpBaseTool.h
//  easymarketing
//
//  Created by HailongHan on 14/12/22.
//  Copyright (c) 2014年 cubead. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface HttpClient : NSObject

/**
 *  Get请求基类封装（参数是对象，不是字典）
 *
 *  @param url         url 请求
 *  @param param       参数是对象，不是字典
 *  @param resultClass 返回的结果类
 *  @param success     成功返回
 *  @param failure     失败返回
 */
+ (void)getWithUrl:(NSString *)url param:(id)param resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure;

/**
 *  Get请求基类封装（参数是对象，不是字典,并且带token）
 *
 *  @param url         url 请求
 *  @param token       token
 *  @param param       参数是对象，不是字典
 *  @param resultClass 返回的结果类
 *  @param success     成功返回
 *  @param failure     失败返回
 */
+ (void)getWithUrl:(NSString *)url token:(NSString *)token param:(id)param resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure;

/**
 *  Get请求基类封装 (参数是字典，不是对象）
 *
 *  @param url         url
 *  @param param       字典参数
 *  @param resultClass 结果返回类
 *  @param success     成功
 *  @param failure     失败
 */
+ (void)getWithUrl:(NSString *)url paramDic:(NSDictionary *)param resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure;

/**
 *  Get请求基类封装 (参数是字典，不是对象，并且带token）
 *
 *  @param url         url
 *  @param token       token
 *  @param param       字典参数
 *  @param resultClass 结果返回类
 *  @param success     成功
 *  @param failure     失败
 */
+ (void)getWithUrl:(NSString *)url token:(NSString *)token paramDic:(NSDictionary *)param resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure;

/**
 *  Post请求类封装（参数是对象，不是字典）
 *
 *  @param url         url 请求地址
 *  @param param       参数
 *  @param resultClass 返回结果类
 *  @param success     成功返回
 *  @param failure     失败返回
 */
+ (void)postWithUrl:(NSString *)url param:(id)param resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure;

/**
 *  Post请求类封装（参数是对象，不是字典，并且带token）
 *
 *  @param url         url 请求地址
 *  @param token       token
 *  @param param       参数
 *  @param resultClass 返回结果类
 *  @param success     成功返回
 *  @param failure     失败返回
 */
+ (void)postWithUrl:(NSString *)url token:(NSString *)token param:(id)param resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure;

/**
 *  Post请求类封装(参数是字典，不是对象）
 *
 *  @param url         url 请求地址
 *  @param param       参数是字典类型
 *  @param resultClass 返回结果类
 *  @param success     成功返回
 *  @param failure     失败返回
 */
+ (void)postWithUrl:(NSString *)url paramDic:(NSDictionary *)param resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure;

/**
 *  Post请求类封装(参数是字典，不是对象，并且带token）
 *
 *  @param url         url 请求地址
 *  @param token       token
 *  @param param       参数是字典类型
 *  @param resultClass 返回结果类
 *  @param success     成功返回
 *  @param failure     失败返回
 */
+ (void)postWithUrl:(NSString *)url token:(NSString *)token paramDic:(NSDictionary *)param resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure;

/**
 *  Put请求类封装(参数是字典，不是对象，并且带token）
 *
 *  @param url         url 请求地址
 *  @param token       token
 *  @param param       参数是字典类型
 *  @param resultClass 返回结果类
 *  @param success     成功返回
 *  @param failure     失败返回
 */
+(void)putWithUrl:(NSString *)url token:(NSString *)token paramDic:(NSDictionary *)param resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure;


+(void)postUploadImage:(NSString*)url andMimeType:(NSArray*)mimeType andData:(NSArray *)data resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure;

/**
 *  Put请求类封装(参数是字典，不是对象，不带token）
 *
 *  @param url         url 请求地址
 *  @param token       token
 *  @param param       参数是字典类型
 *  @param resultClass 返回结果类
 *  @param success     成功返回
 *  @param failure     失败返回
 */
+(void)putWithUrl:(NSString *)url paramDic:(NSDictionary *)param resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure;

/**
 *  Delete请求类封装(参数是字典，不是对象，并且带token）
 *
 *  @param url         url 请求地址
 *  @param token       token
 *  @param param       参数是字典类型
 *  @param resultClass 返回结果类
 *  @param success     成功返回
 *  @param failure     失败返回
 */
+(void)deleteWithUrl:(NSString *)url token:(NSString *)token paramDic:(NSDictionary *)param resultClass:(Class)resultClass success:(void (^)(id))success failure:(void (^)(NSError *))failure;
@end
